Method and System for Block Adaptive Fractional-Bit Per Sample Encoding

ABSTRACT

A method of encoding samples in a digital signal is provided that includes receiving a frame of N samples of the digital signal, computing a data value range L of the N samples, determining a first encoding block size for the frame, mapping the N samples to normalized data values, computing a first block polynomial value for a block of samples in the frame of the first encoding block size, and encoding the first block polynomial value.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims benefit of U.S. Provisional Patent Application Ser. No. 61/218,307, filed Jun. 18, 2009, U.S. Provisional Patent Application Ser. No. 61/219,198, filed Jun. 22, 2009, and U.S. Provisional Patent Application Ser. No. 61/219,868, filed Jun. 24, 2009, which are incorporated herein by reference in their entirety.

BACKGROUND OF THE INVENTION

In many signal processing applications, it is desirable to transmit and/or store a digitized signal such that the exact original signal may be recovered. It is also desirable to reduce the number of bits needed to represent the signal in order to maximize the amount of data that can be handled during the transmission and/or storage process. Lossless compression techniques may be used to achieve this goal. Many techniques exist for lossless compression including Huffman coding, run-length coding, and predictive coding. Each of these coding techniques may provide comparatively better compression for certain classes of signals. However, improvements in lossless compression of digital signals are desirable.

BRIEF DESCRIPTION OF THE DRAWINGS

Particular embodiments in accordance with the invention will now be described, by way of example only, and with reference to the accompanying drawings:

FIG. 1 shows a block diagram of a digital system in accordance with one or more embodiments of the invention;

FIG. 2 shows a flow diagram of a method in accordance with one or more embodiments of the invention;

FIG. 3 shows a block diagram of an audio encoder in accordance with one or more embodiments of the invention; and

FIG. 4 shows an illustrative digital system in accordance with one or more embodiments of the invention.

DETAILED DESCRIPTION OF EMBODIMENTS OF THE INVENTION

Specific embodiments of the invention will now be described in detail with reference to the accompanying figures. Like elements in the various figures are denoted by like reference numerals for consistency.

Certain terms are used throughout the following description and the claims to refer to particular system components. As one skilled in the art will appreciate, components in digital systems may be referred to by different names and/or may be combined in ways not shown herein without departing from the described functionality. This document does not intend to distinguish between components that differ in name but not function. In the following discussion and in the claims, the terms “including” and “comprising” are used in an open-ended fashion, and thus should be interpreted to mean “including, but not limited to . . . . ” Also, the term “couple” and derivatives thereof are intended to mean an indirect, direct, optical, and/or wireless electrical connection. Thus, if a first device couples to a second device, that connection may be through a direct electrical connection, through an indirect electrical connection via other devices and connections, through an optical electrical connection, and/or through a wireless electrical connection.

In the following detailed description of embodiments of the invention, numerous specific details are set forth in order to provide a more thorough understanding of the invention. However, it will be apparent to one of ordinary skill in the art that the invention may be practiced without these specific details. In other instances, well-known features have not been described in detail to avoid unnecessarily complicating the description. In addition, although method steps may be presented and described herein in a sequential fashion, one or more of the steps shown and described may be omitted, repeated, performed concurrently, and/or performed in a different order than the order shown in the figures and/or described herein. Accordingly, embodiments of the invention should not be considered limited to the specific ordering of steps shown in the figures and/or described herein. Further, while some embodiments of the invention are described herein in reference to the ITU-T G.711.0 standard and/or audio signals, one of ordinary skill in the art will understand that embodiments of the invention are not limited to any particular signal coding standard or type of signal. Recommendation ITU-T G.711.0 (“ITU-T G.711.0”) as approved on Sep. 22, 2009 by ITU-T Study Group 16 is incorporated by reference herein in its entirety.

The number of bits b_(L) required to encode a data sample of a digital signal having one of L possible data values is b_(L)=log₂(L). In most cases, the number b_(L) is not an integer. In many signal encoding systems, an integer number of bits are transmitted so, for each data sample, b_(L) is typically rounded up to the nearest integer B_(L)=┌b_(L)┐. For a uniformly distributed input digital signal with N samples encoded per frame, the minimum number of bits required to encode the full frame is b_(NL)=┌Nb_(L)┐. The number of bits actually used, however, may be larger as NB_(L)≧b_(NL).

In general, embodiments of the invention provide for block adaptive fractional-bit lossless encoding of a digital signal that may reduce the overall number of bits needed to encode data frames of N samples. Embodiments of the encoding techniques are capable of achieving bit-rate reduction with respect to NB_(L) bits per frame with acceptable implementation complexity. The acceptable complexity is maintained at the expense of a possible small bit-rate increase with respect to the b_(NL) minimum bits needed for encoding.

More specifically, in one or more embodiments of the invention, samples in each frame of a digital signal are combined into blocks of M samples for joint encoding, where the maximum number of encoding bits per block is constrained. The number of samples M in a block, i.e., the block size, may be fixed or may be adapted for each frame. The criteria considered in choosing the block size may be the frame size N, the data value range L computed for the frame, and/or a constraint on the maximum number of encoding bits to be used. The number of M-sized blocks in a frame is K=└N/M┘ A polynomial value is calculated for each of the K blocks based on the data values in the block and the resulting value is encoded in the output bit-stream. A polynomial value is also calculated for the remaining N−KM data values in the frame, if any, and the resulting value is encoded in the output bit-stream.

FIG. 1 shows a block diagram of a digital system in accordance with one or more embodiments of the invention. The digital system is configured to perform coding of digital audio sequences using embodiments of the methods described herein. The system includes a source digital system (100) that transmits encoded digital audio sequences to a destination digital system (102) via a communication channel (116). The source digital system (100) includes an audio capture component (104), an audio encoder component (106) and a transmitter component (108). The audio capture component (104) is configured to provide an audio sequence to be encoded by the audio encoder component (106). The audio capture component (104) may be, for example, a microphone, a speech synthesizer, an audio archive, or an audio feed from an audio content provider.

The audio encoder component (106) receives an audio sequence from the audio capture component (104) and encodes it for transmission by the transmitter component (108). In general, the audio encoder component (106) receives the audio sequence from the audio capture component (104) as a sequence of frames and encodes the audio data in each frame for transmission. During the encoding process, a method for block adaptive fractional-bit lossless encoding in accordance with one or more of the embodiments described herein may be used. The functionality of an embodiment of the audio encoder component (106) is described in more detail below in reference to FIG. 3.

The transmitter component (108) transmits the encoded audio data to the destination digital system (102) via the communication channel (116). The communication channel (116) may be any communication medium, or combination of communication media suitable for transmission of the encoded audio sequence, such as, for example, wired or wireless communication media, a local area network, and/or a wide area network.

The destination digital system (102) includes a receiver component (110), an audio decoder component (112) and a speaker component (114). The receiver component (110) receives the encoded audio data from the source digital system (100) via the communication channel (116) and provides the encoded audio data to the audio decoder component (112) for decoding. In general, the audio decoder component (112) reverses the encoding process performed by the audio encoder component (106) to reconstruct the frames of the audio sequence. The reconstructed audio sequence may then be reproduced by the speaker component (114). The speaker component (114) may be any suitable audio reproduction device.

In some embodiments of the invention, the source digital system (100) may also include a receiver component and an audio decoder component and/or the destination digital system (102) may include a transmitter component and an audio encoder component for transmission of audio sequences in both directions. Further, the audio encoder component (106) and the audio decoder component (112) may perform encoding and decoding in accordance with one or more audio compression standards such as, for example, ITU-T G.711 and G.711.0 standards. The audio encoder component (106) and the audio decoder component (112) may be implemented in any suitable combination of software, firmware, and hardware, such as, for example, one or more digital signal processors (DSPs), microprocessors, discrete logic, application specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), etc. Software implementing all or part of the audio encoder and/or audio decoder may be stored in a memory, e.g., internal and/or external ROM and/or RAM, and executed by a suitable instruction execution system, e.g., a microprocessor or DSP. Analog-to-digital converters and digital-to-analog converters may provide coupling to the real world, modulators and demodulators (plus antennas for air interfaces) may provide coupling for transmission waveforms, and packetizers may be included to provide formats for transmission.

FIG. 2 shows a flow diagram of a method for block adaptive fractional-bit lossless encoding of one or more frames of N samples in a digital signal in accordance with one or more embodiments of the invention. To encode the N samples, the N sample values may be normalized to l₀ to l_(N−1), the polynomial V in Eq. (1) calculated, and the resulting value encoded. Normalization of sample values is discussed below in reference to step 206.

V=l ₀ +l ₁ L+l ₂ L ² + . . . +l _(N−1) L ^(N−1)  (1)

For large values of N, calculating V may be unacceptable due to the size of the resulting value. In the method of FIG. 2, rather than computing V for the entire frame, V is computed for M-sized blocks of the frame. As is explained in more detail below in reference to step 204, the value of M may be selected based on various criteria including an encoding size constraint B_(v) specifying the maximum number of encoding bits per block, i.e., the maximum number of bits for representing V, the data value range L in the frame, and/or N.

As shown in FIG. 2, initially, a frame of N samples of the digital signal is received (200). The value of N may be any suitable value. For example, N may be 40, 80, 160, 240, or 320. Each of the N samples in the frame, I₀ to I_(N−1), may have one of L possible values. The data value range L for the frame is then computed (202). In one or more embodiments of the invention, the data value range L is an integer representative of the number of possible distinct sample values in the frame. The data value range L may be determined based on the difference between the maximum and minimum values of the N samples in the frame, e.g., L=I_(max)−I_(min)+1 where I_(max)=max{I_(n):n=0, . . . N−1} and I_(min)=min{I_(n):n=0, . . . N−1}. For example, if the distinct sample values in the frame are {−3, −2, 0, 1, 2}, then L=6, indicating that there are six possible sample values in the frame.

In some embodiments of the invention, the data value range L is reduced to an integer representative of the number of actual distinct sample values in the N samples. For example, if the distinct sample values in the frame are {−3, −2, 0, 1, 2}, then L is reduced to 5, indicating that there are five actual sample values in the frame. Any suitable technique may be used to reduce the data value range L, including computing the reduced value of L directly, i.e., without computing the number of possible sample values first. Some suitable methods for reduction of the data value range L are described in copending U.S. patent application Ser. No. ______ (TI-68238), entitled “Adaptive Encoding of a Digital Signal with One or More Missing Values,” filed on Jun. 18, 2010, which is incorporated by reference herein in its entirety. In addition, some suitable methods for data value range reduction are described in ITU-T G.711.0.

The encoding block size M for the frame is then determined (204). The encoding block size M may be any suitable value and may be determined in any suitable way, e.g., a single empirically determined value, direct computation, table look-up, etc. The number of bits needed to encode the polynomial V computed for M samples is B_(ML)=┌Mb_(L)┐. Generally, good values for M result in Mb_(L) being slightly less than an integer so that the coding inefficiency ε=B_(ML)−Mb_(L) is minimized.

In one or more embodiments of the invention, the value of the encoding block size M for the frame is selected such that the number of bits needed to encode the frame B_(fr) is minimized and the polynomial V computed for a sample block of size M contains a sufficiently small number of samples to comply with an encoding size constraint B_(v), i.e., the number of bits required to represent V does not exceed B_(v). The encoding size constraint B_(v) may have any suitable value and may be empirically determined. For a fixed-point implementation, the encoding size constraint B_(v) may be, for example, 15, i.e., the number of bits that represent a positive value in a 16-bit signed integer. In some embodiments of the invention, each data frame may be encoded with an integer number of bytes (each byte consisting of eight bits). In such embodiments, minimizing ┌B_(fr)/8┐ instead of simply minimizing B_(fr) may be considered as part of selecting the encoding block size M.

Whether or not an encoding size constraint B_(v) is considered, the data value range L of the frame may be considered in selecting the encoding block size M and, in some embodiments of the invention, the frame size N may also be considered. For example, the encoding block size M may be determined based on L and N by considering the trade-off between the coding efficiency and the number of values of V that would need to be calculated. For large values of N, a larger value of M may be selected in order to reduce the number of polynomial calculations for encoding the frame, even though the encoding efficiency may be slightly smaller than with a smaller value of M. Compare M=3 versus M=6 for L=5 in Tables 1 and 2 below. In another example, the encoding block size M may be chosen based solely on L by choosing the value of M for a given L that provides the best coding efficiency. For example, for L=5 in the in Tables 1 and 2, M=3 would be selected, since that value provides maximum efficiency in coding.

In some embodiments of the invention, information such as the values of L and M and/or a data value set indicator (data value sets are explained below in reference to FIG. 3 and Table 3) need to be communicated to a decoder, and are encoded in the output bit stream in association with the encoded frame. To maximize efficiency, this information may be encoded in spare bits left over if the encoded frame data is transmitted as whole bytes. Thus, the need to transmit such information may also be considered when determining a value for M.

In some embodiments of the invention, the encoding block size M may be computed for each frame based on the above discussed criteria for selecting a value for M. In some embodiments of the invention, the encoding block size M may be empirically determined based on statistical analysis of relevant test cases instead of being computed at run time. The empirical determination would include consideration of the criteria for selecting the value of M as discussed above. In some embodiments of the invention, M may be fixed for each frame. In some embodiments of the invention, the encoding block size M may be an empirically determined integer value that is a factor of the frame size(s), i.e., there will be no partial blocks in a frame. For example, if the possible frame sizes are 40, 80, 160, 240, and 320, M may be set to 5 for all frame sizes. In some embodiments of the invention, an empirically determined encoding block size may be provided for each frame size and determining the encoding block size entails selecting the encoding block size corresponding to the size of the received frame. In some embodiments of the invention, empirically determined encoding block sizes may be provided for specific data value ranges. For example, if the data value range L of a frame is 5, the encoding block size M may be set to 3, if the data value range L is 3 or 6, the encoding block size M may be set to 5, etc.

Referring again to FIG. 2, the N sample values of the frame are normalized (206). That is, the sample values I₀ to I_(N−1) are mapped to normalized data values l₀ to l_(N−1). The normalization is performed to constrain the possible values of the polynomial V for purposes of coding efficiency. For example, if the distinct sample values in a frame are {−3, 0, 3}, then L=3 when data value range reduction is used. Assuming an encoding block size M=3, the polynomial to be calculated is V=l₀+l₁L+l₂L². If the distinct sample values {−3, 0, 3} are mapped to normalized data values {0, 1, 2}, then the minimum value of V is 0 and the maximum value is 26. This corresponds directly to the fact that for three distinct sample values and an encoding block size of M=3, there are 3³=27 possible combinations of the three distinct sample values. To maximize coding efficiency, it is desirable that the value of V have a range of twenty seven values. If the normalization is not performed, the range of values of V would be larger than twenty seven, which may lead to inefficient encoding.

Accordingly, normalized data values are determined and the actual sample values are mapped to the normalized data values. The normalized data values may be any suitable values and the mapping of the actual sample values to the normalized sample values may be performed using any suitable mapping technique. For the above example, {−3,0,3} may be mapped to {2,1,0} or any permutation of {0,1,2}, as long as the decoder knows how the mapping was done. Further, {−3,0,3} may be mapped to {−1,0,1}. In this latter case, even though V may be positive or negative, it still satisfies the constraint that the range of values of V is 27.

In one or more embodiments of the invention, the sample values are normalized such that the values are adjusted to lie between 0 and L−1:

l _(n) =I _(n) −I _(min) n=0, . . . , N−1  (2)

Further, in some embodiments of the invention, when data value range reduction is used, the normalization accounts for missing data values in the data value range. An example of normalization of sample values when data value range reduction is used is described in ITU-T G.711.0.

Once the encoding block size M is determined and the sample values are normalized, K=└N/M┘ consecutive blocks of M samples in the frame are encoded (208). That is, the polynomial value V is computed for M samples at a time. More specifically, for each data block k in the frame from 0 to K−1, a block polynomial value V_(k) is calculated as per Eq. (3).

V _(k) =l _(kM) +l _(kM+1) L+ . . . +l _(kM+M−1) L ^(M−1)  (3)

After computation, each V_(k) value is encoded in the output bit-stream. In some embodiments of the invention, each value is encoded with B_(ML)=┌Mb_(L)┐=┌M log₂(L)┐ bits. In such embodiments, the encoding of the V_(K) values in B_(ML) bits may be, for example, a simple binary encoding of each V_(K) value into a binary number represented in B_(ML) bits.

After the K consecutive data blocks are encoded, any remaining samples in the frame are encoded (210). That is, if N−KM is not 0, the remaining m=N−KM samples are encoded. That is, a partial block polynomial value V_(K) is calculated for the m samples as per Eq. (3) and the resulting value is encoded.

V _(K) =l _(KM) +l _(KM+1) L+ . . . +l _(N−1) L ^(m−1)  (4)

After computation, the partial block polynomial value V_(K) value is encoded in the output bit-stream. In some embodiments of the invention, the partial block polynomial value is encoded with ┌mb_(L)┐ bits. The steps 200-210 are repeated (212) for each frame in the digital signal that is to be encoded using block adaptive fractional-bit lossless encoding.

The total number of bits B_(fr) needed to encode N samples with the above method is

B _(fr) =K┌Mb _(L) ┐+┌mb _(L)┐.

Further, if N, L, and M are known to the decoder, there is no need for transmission of extra information in addition to the bits representing the encoded data. The computational complexity increase of embodiments of the above method as compared to to encoding each data value in the frame with B_(L) bits is on the order of N additional multiplications and additions to calculate V_(k) for the encoded blocks.

In one or more embodiments of the invention, steps 204-210 are performed solely for frames with selected values of the data value range L and that include selected combinations of distinct sample values, i.e., selected data value sets. The selected data value sets, and their data value ranges, may be derived by analyzing the results of applying the method to relevant test digital signals to determine the data value sets that could benefit from application of the method, i.e., that had more efficient encoding with application of the method. The selected data value sets and data value ranges, or a subset thereof, may then be used to determine if step 204-210 are to be performed for a frame. In such embodiments, after the data value range L of the received frame is computed, the data value range L may be compared to the selected data value ranges. If the value of L is not equal to one of the selected data value ranges, steps 204-210 are not performed. If the value of L is equal to one of the selected data value ranges, then the distinct sample values in the frame may be compared to one or more of the selected data value sets that have the same data value range. If the distinct sample values in the frame are the same as those in one of these data value sets, then steps 204-210 are performed. Otherwise, they are not performed. Table 3 below shows selected data value sets and data value ranges for an embodiment of the invention included in ITU-T G.711.0.

In the method of FIG. 2, if B_(L)=b_(L) or M=1, no bit-rate reduction is achieved. The number of bits per frame B_(fr) is bound by NB_(L)≧B_(fr)≧b_(NL)=┌Nb_(L)┐ and the method is potentially most effective when B_(L)−b_(L)≈1. In general, B_(fr) would be minimized for M=N but, as was previously mentioned, the calculation of a possibly very large polynomial V as per Eq. (1) would be needed that would likely exceed the encoding size constraint B_(v). Further, the rounding of B_(fr) to an integer number of bits introduces a “coding inefficiency” ε that is maximized when the rounding occurs for each data sample, ε_(max)=ε₁=N(┌b_(L)┐−b_(L)), and minimized when performed once per frame, ε_(min)=ε_(N)=┌Nb_(L)┐−Nb_(L) as would be done for the case of M=N. For the above method, the coding inefficiency ε depends on the value of M, ε_(M)=K(┌Mb_(L)┐−Mb_(L))+(┌mb_(L)┐−mb_(L)). Note that ε₁≧ε_(M)≧ε_(N).

As was previously mentioned, good candidates for the encoding block size M result in Mb_(L) being slightly less than an integer so that the coding inefficiency ε=B_(ML)−Mb_(L) is minimized. For example, Table 1 shows Mb_(L) values for several possible combinations of M and L and Table 2 shows the corresponding B_(ML) and ε values.

TABLE 1 Mb_(L) M = 1 M = 2 M = 3 M = 4 M = 5 M = 6 L = 3 1.58 3.17 4.75 6.34 7.92 9.51 L = 5 2.32 4.64 6.97 9.29 11.61 13.93 L = 6 2.58 5.17 7.75 10.34 12.92 15.51

TABLE 2 B_(ML) ε M = 1 M = 2 M = 3 M = 4 M = 5 M = 6 L = 3 2 0.42 4 0.83 5 0.25 7 0.66  8 0.08 10 0.49 L = 5 3 0.68 5 0.36 7 0.03 10 0.71 12 0.39 14 0.07 L = 6 3 0.42 6 0.83 8 0.25 11 0.66 13 0.08 16 0.49

As can be seen from these tables, to minimize the coding inefficiency ε for data value ranges L equal 3, 5, and 6, good candidates for the respective encoding block sizes M are 5, 3, and 5. Consider, for example, a case where the data value range L=5 and the frame size N=40. The minimum number of bits needed to encode a frame of forty samples, each taking on one of five possible values, would be ┌40 log₂(5)┐=93 bits (twelve bytes). Assuming an integer number of bits per sample, the number of bits used would be larger: 40┌log₂(5)┐=120 (fifteen bytes). Applying the method with M=3 or M=5 would result in twelve bytes per frame, equal to the minimum bytes needed to encode the frame and a three byte saving over assumption of an integer number of bits per sample. That is, for M=3, ┌40/3┐=13 blocks of three samples would be encoded with 7 bits per block and the one remaining sample would be encoded with three bits for the total of ┌13*7+3)/8┐=12 bytes per frame. Similarly, for M=5, ┌40/5┐=8 blocks of five samples would be encoded with 12 bits per block for a total of ┌(8*12)/8┐=12 bytes per frame. In this particular case, the M=5 configuration may be preferred as it provides similar performance to the M=3 configuration and also provides an integer number of data blocks within a frame, thus eliminating the need to encode a partial block at the end of the frame.

Consider also a case where L=5 and the frame size N=160. The minimum number of bits needed to encode a frame of 160 samples would be ┌160 log₂(5)┐=258 bits (forty-seven bytes) while the integer-number-of-bits-per-sample encoding would require 160┌log₂(5)┐=480 bits (60 bytes). Applying the method with M=3 would result in 47 bytes per frame, i.e., ┌(└160/3┘*7+3)/8┐=47, and with M=5 would result in 48 bytes per frame, i.e., ┌(└160/5┘*12)/8┐=48. Therefore, the M=3 configuration would be preferred in this case and the achieved savings would be 13 bytes (from 60 bytes down to 47 bytes).

As another simple example, consider the case when L=6 and N=40. The minimum number of bits needed to encode a frame of 40 samples would be ┌40 log₂(6)┐=104 (13 bytes) and with an integer number of bits per sample, the number of bits needed would be larger, 40┌log₂(6)┐=120 (15 bytes). Applying the method with M=5, the number of bits needed to encode the frame would be └40/5┘*13+0=104 (13 bytes, the same as the minimum number of bits). In this case, two bytes would be saved, from fifteen bytes down to thirteen bytes. For a frame of N=160 samples with L=6, the savings would be eight bytes, from sixty bytes down to fifty-two bytes.

In one or more embodiments of the invention, instead of determining a single encoding block size M for a frame, two or more encoding block sizes may be determined and used for encoding the N samples in the frame. The use of multiple block sizes in a frame may, for example, reduce the amount of computation needed to encode the frame while maintaining the same or close to the same coding efficiency as using a single block size. For example, if N=40 and L=5, two encoding block sizes, M₁=3 and M₂=6, may be selected. As can be seen in Table 2 above, the encoding block size M₁=3 may yield a better coding efficiency than the encoding block size M₂=6, but the difference is very small. The forty samples may be divided into six encoding blocks of six samples each and one encoding block of three samples. Block polynomial values as per Eq. (3) are then computed for the six six-sample blocks and for the single three-sample block, and the block polynomial values are encoded. A partial block polynomial value as per Eq. (4) is also computed for the remaining sample in the frame and encoded. While encoding the frame with a single encoding block size of three may be slightly more efficient, fourteen polynomial calculations are required. Using the two encoding block sizes, some coding efficiency is sacrificed in exchange for reducing the number of polynomial calculations to eight.

FIG. 3 shows a block diagram of an audio encoder (300), e.g., the audio encoder (106) of FIG. 1, configured to perform block adaptive fractional-bit lossless encoding in accordance with one or more embodiments of the invention. More specifically, FIG. 3 shows a high level block diagram of the ITU-T G.711.0 audio encoder for illustrative purposes. The audio encoder (300) includes a frame buffer (302), two coding tool selection components (304, 306), twelve coding tools, and a multiplexer (308). The audio encoder (300) receives G.711 audio frames in the frame buffer (302). The frame size N may be 40, 80, 160, 240, or 320 samples. Each frame is then provided to input selection component (304).

The input selection component (304) may select one of seven encoding tools, i.e., the three constant coding tools, the PM zero Rice coding tool, the binary coding tool, the pulse mode coding tool, and the value-location coding tool, to which it is connected for encoding the frame based on an analysis of the audio frame and/or determine that the frame should be encoded by one of the five other coding tools, i.e., the mapped domain LP coding tool, the fractional-bit coding tool, the min-max level coding tool, the direct LP coding tool, and the uncompressed coding tool. The outputs of the latter five coding tools are provided to output selection component (306) which selects the best output of the five coding tools by analyzing the results of the coding tools. The output selection component (306) may not require a complete encoding by each of the five coding tools, but rather may estimate the resulting encoded frame sizes and select one of the coding tools for performing the actual encoding based on the estimates. The multiplexer (308) selects which coding tool bit stream to output: the bit stream of the coding tool selected by the input selection component (304) or the bit stream of the coding tool selected by the output selection component (306).

The coding techniques provided by each of the coding tools are described in ITU-T G.711.0. Further, the value-location coding tool may provide a coding technique as described in co-pending U.S. patent application Ser. No. ______ (TI-68090), entitled “Method and System For Lossless Value-Location Encoding,” filed on Jun. 18, 2010, which is incorporated by reference herein in its entirety. The coding technique described in ITU-T G.711.0 for the fractional-bit coding tool is an embodiment of the method for block adaptive fractional-bit lossless encoding of FIG. 2. In the described embodiment, the fractional-bit coding tool uses an empirically determined encoding block size M=5 for all frame sizes, the data value range L is determined based on the difference between the maximum and minimum values in the frame being encoded as previously described, and each block polynomial value V_(k) is placed in the output bit-stream using ┌M log₂(L)┐ bits. Further, the encoding size constraint B_(v) used during the empirical determination of the value of M was fifteen to ensure that the polynomial values could be represented as positive numbers in a sixteen bit signed integer.

The described embodiment also solely encodes frames with selected values of the data value range L and that include selected combinations of distinct sample values, i.e., selected data value sets. Table 3 shows the selected data value ranges and data value sets. In this table, L′ is the reduced value of the data value range L. This table also includes prefix codes that are used in lieu of encoding L and the minimum sample value in the output bit stream. Each prefix code represents a specific combination of data value set, data value range, and frame size. The data value sets in the table were determined by analysis of the results of applying the method of FIG. 2 to G.711 bit stream test cases. Data value sets were identified that showed bit rate reduction with the application of the method. The twelve data value sets that showed the most bit rate reduction were then chosen for the G.711.0 method embodiment.

TABLE 3 Prefix code for each frame length L L′ Data Value Sets 40 80 160 240 320 2 2 {0, 1} 2 14 20 24 28 3 2 {−2, 0} 4 16 22 26 30 3 3 {−2, −1, 0} 6 18 — — — 3 3 {−1, 0, 1} 7 19 — — — 4 3 {−2, 0, 1} 5 17 23 27 31 4 4 {−2, −1, 0, 1} 3 15 21 25 29 5 4 {−3, −2, 0, 1} 8 — — — — 5 4 {−2, 0, 1, 2} 10 — — — — 5 5 {−2, −1, 0, 1, 2} 9 — — — — 6 5 {−3, −2, 0, 1, 2} 12 — — — — 6 6 {−3, −2, −1, 0, 1, 2} 11 — — — — 7 6 {−4, −3, −2, 0, 1, 2} 13 — — — —

In one or more embodiments of the invention, the fractional-bit coding tool may provide coding functionality in accordance with one or more other embodiments of the method of FIG. 2. For example, the value of the encoding block size M may be adapted for each frame, may differ for each frame size, there may be two or more encoding block sizes for a frame, etc.

Embodiments of the methods and encoders described herein may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the software may be executed in one or more processors, such as a microprocessor, application specific integrated circuit (ASIC), field programmable gate array (FPGA), or digital signal processor (DSP). Any included software may be initially stored in a computer-readable medium such as a compact disc (CD), a diskette, a tape, a file, memory, or any other computer readable storage device and loaded and executed in the processor. In some cases, the software may also be sold in a computer program product, which includes the computer-readable medium and packaging materials for the computer-readable medium. In some cases, the software instructions may be distributed via removable computer readable media (e.g., floppy disk, optical disk, flash memory, USB key), via a transmission path from computer readable media on another digital system, etc.

Embodiments of the methods and encoders for block adaptive fractional-bit encoding as described herein may be implemented for virtually any type of digital system (e.g., a desk top computer, a laptop computer, a handheld device such as a mobile (i.e., cellular) phone, a personal digital assistant, a Voice over Internet Protocol (VOIP) communication device such as a telephone, server or personal computer, etc.) with functionality to capture or otherwise generate digital signals. FIG. 4 shows a block diagram of an illustrative digital system (400) (e.g., a personal computer) that includes a processor (402), associated memory (404), a storage device (406), and numerous other elements and functionalities typical of digital systems (not shown). In one or more embodiments of the invention, the digital system (400) may include multiple processors and/or one or more of the processors may be digital signal processors.

The digital system (400) may also include input means, such as a keyboard (408) and a mouse (410) (or other cursor control device), and output means, such as a monitor (412) (or other display device). The digital system (400) may also include an audio capture device (not shown) that includes circuitry (e.g., a microphone) for capturing audio sequences. The digital system (400) may include an audio encoder, e.g., the encoder of FIG. 3, with functionality to perform embodiments of the method of FIG. 2 as described herein. The digital system (400) may be connected to a network (not shown) (e.g., a local area network (LAN), a wide area network (WAN) such as the Internet, a cellular network, any other similar type of network and/or any combination thereof) via a network interface connection (not shown). Those skilled in the art will appreciate that the input and output means may take other forms.

Further, those skilled in the art will appreciate that one or more elements of the aforementioned digital system (400) may be located at a remote location and connected to the other elements over a network. Further, embodiments of the invention may be implemented on a distributed system having a plurality of nodes, where each portion of the system and software instructions may be located on a different node within the distributed system. In one embodiment of the invention, the node may be a digital system. Alternatively, the node may be a processor with associated physical memory. The node may alternatively be a processor with shared memory and/or resources.

Software instructions to perform embodiments of the invention may be stored on a computer readable medium such as a compact disc (CD), a diskette, a tape, a file, memory, or any other computer readable storage device. The software instructions may be distributed to the digital system (400) via removable computer readable media (e.g., floppy disk, optical disk, flash memory, USB key), via a transmission path from computer readable media on another digital system, etc.

While the invention has been described with respect to a limited number of embodiments, those skilled in the art, having benefit of this disclosure, will appreciate that other embodiments can be devised which do not depart from the scope of the invention as disclosed herein. Accordingly, the scope of the invention should be limited only by the attached claims. It is therefore contemplated that the appended claims will cover any such modifications of the embodiments as fall within the true scope and spirit of the invention. 

1. A method of encoding samples in a digital signal, the method comprising: receiving a frame of N samples of the digital signal; computing a data value range L of the N samples; determining a first encoding block size for the frame; mapping the N samples to normalized data values; computing a first block polynomial value for a block of samples in the frame of the first encoding block size; and encoding the first block polynomial value.
 2. The method of claim 1, further comprising: computing a partial block polynomial value for remaining samples in the frame; and encoding the partial block polynomial value.
 3. The method of claim 1, further comprising: determining a second encoding block size for the frame; computing a second block polynomial value for a block of samples in the frame of the second encoding block size; and encoding the second block polynomial value.
 4. The method of claim 1, wherein the data value range L indicates a number of possible distinct sample values in the frame.
 5. The method of claim 1, wherein the data range value L indicates a number of actual distinct sample values in the frame.
 6. The method of claim 1, wherein the first encoding block size is an empirically determined value.
 7. The method of claim 1, wherein the first encoding block size is determined based on at least one selected from a group consisting of the data value range L, the value of N, and an encoding size constraint.
 8. An encoder for encoding a digital signal, the encoder comprising: a frame buffer component configured to receive a frame of N samples of the digital signal; and a fractional-bit coding component configured to encode the frame by: computing a data value range L of the N samples; determining a first encoding block size for the frame; mapping the N samples to normalized data values; computing a first block polynomial value for a block of samples in the frame of the first encoding block size; and encoding the first block polynomial value.
 9. The encoder of claim 8, wherein the fractional-bit coding component is further configured to encode the frame by: computing a partial block polynomial value for remaining samples in the frame; and encoding the partial block polynomial value.
 10. The encoder of claim 8, wherein the fractional-bit coding component is further configured to encode the frame by: determining a second encoding block size for the frame; computing a second block polynomial value for a block of samples in the frame of the second encoding block size; and encoding the second block polynomial value.
 11. The encoder of claim 8, wherein the data value range L indicates a number of possible distinct sample values in the frame.
 12. The encoder of claim 8, wherein the data range value L indicates a number of actual distinct sample values in the frame.
 13. The encoder of claim 8, wherein the first encoding block size is an empirically determined value.
 14. The encoder of claim 8, wherein the first encoding block size is determined based on at least one selected from a group consisting of the data value range L, the value of N, and an encoding size constraint.
 15. A digital system configured to encode samples in a digital signal, the digital system comprising: means for receiving a frame of N samples of the digital signal; means for computing a data value range L of the N samples; means for determining a first encoding block size for the frame; means for mapping the N samples to normalized data values; means for computing a first block polynomial value for a block of samples in the frame of the first encoding block size; and means for encoding the first block polynomial value
 16. The digital system of claim 15, further comprising: means for computing a partial block polynomial value for remaining samples in the frame; and means for encoding the partial block polynomial value.
 17. The digital system of claim 15, wherein the data value range L indicates one selected from a group consisting of a number of possible distinct sample values in the frame and a number of actual distinct sample values in the frame.
 18. The digital system of claim 15, wherein the first encoding block size is an empirically determined value.
 19. The digital system of claim 15, wherein the first encoding block size is determined based on at least one selected from a group consisting of the data value range L, the value of N, and an encoding size constraint. 